package emp.entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import com.axcessfinancial.domain.*;
import com.sun.org.apache.xml.internal.security.c14n.helper.C14nHelper;

@Entity
@Table(name="compra")

public class EntCompra extends com.axcessfinancial.domain.BaseEntity implements Serializable {
	
	private String numDocumento;
	private Date fecha;
	
	private EntProveedor entProveedor;
	
	private EntTipoDocumento entTipoDocumento;
	
	private Date fechaRecepcion;
	
	private EntTipoCompra entTipoCompra;
	
	private String observacion;
	private double valorCompra;
	private double igv;
	private double impuesto;
	private double totalCompra;
	
	private EntAlmacen entAlmacen;
	
	private EntMoneda entMoneda;
	
	private EntTipoCambio entTipoCambio;
	
	private double tasaCambio;
	private int estado;
	private Date fechaVence;
	private double montoPagado;

	
	@Column(name="numDocumento", length=20)
	public String getNumDocumento() {
		return numDocumento;
	}
	public void setNumDocumento(String numDocumento) {
		this.numDocumento = numDocumento;
	}

	@Column(name="fecha")
	public Date getFecha() {
		return fecha;
	}
	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
	
	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="idProveedor")
	public EntProveedor getEntProveedor() {
		return entProveedor;
	}
	public void setEntProveedor(EntProveedor entProveedor) {
		this.entProveedor = entProveedor;
	}

	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="idTipoDocumento")
	public EntTipoDocumento getEntTipoDocumento() {
		return entTipoDocumento;
	}
	public void setEntTipoDocumento(EntTipoDocumento entTipoDocumento) {
		this.entTipoDocumento = entTipoDocumento;
	}

	@Column(name="fechaRecepcion")
	public Date getFechaRecepcion() {
		return fechaRecepcion;
	}
	public void setFechaRecepcion(Date fechaRecepcion) {
		this.fechaRecepcion = fechaRecepcion;
	}

	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="idTipoCompra")
	public EntTipoCompra getEntTipoCompra() {
		return entTipoCompra;
	}
	public void setEntTipoCompra(EntTipoCompra entTipoCompra) {
		this.entTipoCompra = entTipoCompra;
	}

	@Column(name="observacion", length=150)
	public String getObservacion() {
		return observacion;
	}
	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}

	@Column(name="valorCompra", length=12, precision=2)
	public double getValorCompra() {
		return valorCompra;
	}
	public void setValorCompra(double valorCompra) {
		this.valorCompra = valorCompra;
	}

	@Column(name="igv", length=12, precision=2)
	public double getIgv() {
		return igv;
	}
	public void setIgv(double igv) {
		this.igv = igv;
	}

	@Column(name="impuesto", length=12, precision=2)
	public double getImpuesto() {
		return impuesto;
	}
	public void setImpuesto(double impuesto) {
		this.impuesto = impuesto;
	}

	@Column(name="totalCompra", length=12, precision=2)
	public double getTotalCompra() {
		return totalCompra;
	}
	public void setTotalCompra(double totalCompra) {
		this.totalCompra = totalCompra;
	}

	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="idAlmacen")
	public EntAlmacen getEntAlmacen() {
		return entAlmacen;
	}
	public void setEntAlmacen(EntAlmacen entAlmacen) {
		this.entAlmacen = entAlmacen;
	}

	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="idMoneda")
	public EntMoneda getEntMoneda() {
		return entMoneda;
	}
	public void setEntMoneda(EntMoneda entMoneda) {
		this.entMoneda = entMoneda;
	}
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="idTipoCambio")
	public EntTipoCambio getEntTipoCambio() {
		return entTipoCambio;
	}
	public void setEntTipoCambio(EntTipoCambio entTipoCambio) {
		this.entTipoCambio = entTipoCambio;
	}

	@Column(name="tasaCambio", length=12, precision=2)
	public double getTasaCambio() {
		return tasaCambio;
	}
	public void setTasaCambio(double tasaCambio) {
		this.tasaCambio = tasaCambio;
	}

	@Column(name="estado")
	public int getEstado() {
		return estado;
	}
	public void setEstado(int estado) {
		this.estado = estado;
	}

	@Column(name="fechaVence")
	public Date getFechaVence() {
		return fechaVence;
	}
	public void setFechaVence(Date fechaVence) {
		this.fechaVence = fechaVence;
	}

	@Column(name="montoPagado", length=12, precision=2)
	public double getMontoPagado() {
		return montoPagado;
	}
	public void setMontoPagado(double montoPagado) {
		this.montoPagado = montoPagado;
	}

	public EntCompra() {
		// TODO Auto-generated constructor stub
	}
	
	public EntCompra(String numDocumento, Date fecha,
			EntProveedor entProveedor, EntTipoDocumento entTipoDocumento,
			Date fechaRecepcion, EntTipoCompra entTipoCompra,
			String observacion, double valorCompra, double igv,
			double impuesto, double totalCompra, EntAlmacen entAlmacen,
			EntMoneda entMoneda, EntTipoCambio entTipoCambio,
			double tasaCambio, int estado, Date fechaVence, double montoPagado) {
		super();
		this.numDocumento = numDocumento;
		this.fecha = fecha;
		this.entProveedor = entProveedor;
		this.entTipoDocumento = entTipoDocumento;
		this.fechaRecepcion = fechaRecepcion;
		this.entTipoCompra = entTipoCompra;
		this.observacion = observacion;
		this.valorCompra = valorCompra;
		this.igv = igv;
		this.impuesto = impuesto;
		this.totalCompra = totalCompra;
		this.entAlmacen = entAlmacen;
		this.entMoneda = entMoneda;
		this.entTipoCambio = entTipoCambio;
		this.tasaCambio = tasaCambio;
		this.estado = estado;
		this.fechaVence = fechaVence;
		this.montoPagado = montoPagado;
	}
	
}
